CREATE TABLE [dbo].[tb_CursosDictados]
(
[idCursoDictado] [int] NOT NULL IDENTITY(1, 1),
[Agente] [int] NOT NULL,
[Fecha] [datetime] NULL,
[Horas] [int] NULL,
[Descripcion] [varchar] (150) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[Entidad] [int] NOT NULL,
[TipoEntidad] [int] NULL,
[GrupoIncumbencia] [int] NULL,
[FechaAlta9] [datetime] NULL CONSTRAINT [DF_tb_CursosDictados_FechaAlta9] DEFAULT (getdate()),
[FechaPresentacion] [datetime] NOT NULL
) ON [PRIMARY]
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE TRIGGER [dbo].[AsignarFechaDefaultCursosDictados] ON [dbo].[tb_CursosDictados] 
FOR INSERT, UPDATE
AS
BEGIN
--AsignarFechaDefault
SET NOCOUNT ON

DECLARE @FechaPresentacion as datetime
DECLARE @id as int
DECLARE @idCursoDictadoAudit int

SELECT @FechaPresentacion = FechaPresentacion,@id=idCursoDictado  FROM INSERTED

	IF (@@ROWCOUNT=1) 
	 BEGIN
	    IF @FechaPresentacion IS NULL SELECT @FechaPresentacion= dbo.FECHA_PRESENTACION_DEFAULT ()
	    UPDATE tb_CursosDictados SET FechaPresentacion = @FechaPresentacion WHERE idCursoDictado=@id
        /*borra el registro duplicado en la tabla tb_servicioshistoricosaudit*/
        select @idCursoDictadoAudit=max(idcursodictadoaudit) FROM  dbo.tb_CursosDictadosAudit
        delete dbo.tb_CursosDictadosAudit where idcursodictadoaudit=@idCursoDictadoAudit
	 END

END
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE TRIGGER [dbo].[tri_CursosDictadosAudit] 
on [dbo].[tb_CursosDictados] for insert,update,delete as
DECLARE @OPERACION varchar(50)

IF EXISTS (SELECT * FROM INSERTED)
BEGIN
    IF EXISTS (SELECT * FROM DELETED)
    BEGIN
        --UPDATE
        SET @OPERACION='UPDATE'
    END
    ELSE
    BEGIN
        --INSERT
        SET @OPERACION='INSERT'
    END
    
    --handle insert or update data
 insert into tb_CursosDictadosAudit(idcursodictado,agente,fecha,horas,descripcion,entidad,tipoentidad,grupoincumbencia,
                                             fechaalta9,fechapresentacion,operacion,fechaoperacion)
                                   SELECT  idcursodictado,agente,fecha,horas,descripcion,entidad,tipoentidad,grupoincumbencia,
                                             fechaalta9,fechapresentacion,@OPERACION,getdate() FROM inserted 

END
ELSE IF EXISTS(SELECT * FROM DELETED)
BEGIN
    --DELETE
    SET @OPERACION='DELETE'
    insert into tb_CursosDictadosAudit(idcursodictado,agente,fecha,horas,descripcion,entidad,tipoentidad,grupoincumbencia,
                                             fechaalta9,fechapresentacion,operacion,fechaoperacion)
                                   SELECT  idcursodictado,agente,fecha,horas,descripcion,entidad,tipoentidad,grupoincumbencia,
                                             fechaalta9,fechapresentacion,@OPERACION,getdate() FROM deleted  
    
    

END

GO
ALTER TABLE [dbo].[tb_CursosDictados] ADD CONSTRAINT [PK_tb_cursosDictados] PRIMARY KEY CLUSTERED  ([idCursoDictado]) WITH (FILLFACTOR=95) ON [PRIMARY]
GO
CREATE NONCLUSTERED INDEX [IDXCURSOAGENTE] ON [dbo].[tb_CursosDictados] ([Agente]) WITH (FILLFACTOR=95) ON [PRIMARY]
GO
CREATE NONCLUSTERED INDEX [idxXCursosDictadosAgente] ON [dbo].[tb_CursosDictados] ([idCursoDictado], [Agente]) WITH (FILLFACTOR=95) ON [PRIMARY]
GO
CREATE NONCLUSTERED INDEX [IDXAGENTEENTGI] ON [dbo].[tb_CursosDictados] ([idCursoDictado], [Agente], [Entidad], [GrupoIncumbencia]) WITH (FILLFACTOR=95) ON [PRIMARY]
GO
ALTER TABLE [dbo].[tb_CursosDictados] WITH NOCHECK ADD CONSTRAINT [FK_tb_cursosDictados_tb_Agentes] FOREIGN KEY ([Agente]) REFERENCES [dbo].[tb_Agentes] ([idAgente])
GO
ALTER TABLE [dbo].[tb_CursosDictados] WITH NOCHECK ADD CONSTRAINT [FK_tb_CursosDictados_tb_EntidadesCapacitadoras] FOREIGN KEY ([Entidad]) REFERENCES [dbo].[tb_EntidadesCapacitadoras] ([idEntidad])
GO
ALTER TABLE [dbo].[tb_CursosDictados] WITH NOCHECK ADD CONSTRAINT [FK_tb_cursosDictados_tb_GruposDeIncumbencias] FOREIGN KEY ([GrupoIncumbencia]) REFERENCES [dbo].[tb_GruposDeIncumbencias] ([idGrupoIncumbencia])
GO
ALTER TABLE [dbo].[tb_CursosDictados] WITH NOCHECK ADD CONSTRAINT [FK_tb_CursosDictados_tb_TipoEntidadCapacitadora] FOREIGN KEY ([TipoEntidad]) REFERENCES [dbo].[tb_TipoEntidadCapacitadora] ([id])
GO
